package com.mrd.util;

import com.mrd.framework.security.config.SecurityConstants;
import com.mrd.framework.utils.HttpUtils;
import com.mrd.gtimp.base.entity.Module;
import com.mrd.gtimp.base.entity.Role;
import com.mrd.gtimp.base.entity.User;

import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * 登录信息获取 Created by winaya on 2016/8/24.
 */
public class LoginUtil {

    /**
     * 判断用户是否已经登录
     *
     * @return 已登录返回true, 否则返回false
     */
    public static boolean isLogin() {
        return StringUtils.isNotEmpty(getLoginAccount());
    }

    /**
     * 获取登录用户的账号
     *
     * @return 登录用户的账号
     */
    public static String getLoginAccount() {
        return HttpUtils.getSession().getAttribute(SecurityConstants.SESSION_USER_ACCOUNT_NAME).toString();
    }

    /**
     * 获取登录用户
     *
     * @return 当前登录的用户
     */
    public static User getLoginUser() {
        return (User) HttpUtils.getSession().getAttribute(SecurityConstants.SESSION_USER_NAME);
    }

    /**
     * 获取登录用户
     *
     * @return 当前登录的用户
     */
    public static com.mrd.gtimpframe.entity.User getNewLoginUser() {
        return (com.mrd.gtimpframe.entity.User) HttpUtils.getSession().getAttribute(SecurityConstants.NEW_SESSION_USER_NAME);
    }

    /**
     * 获取登录用户Id
     *
     * @return 当前登录的用户Id
     */
    public static String getLoginUserId() {
        User user = (User) HttpUtils.getSession().getAttribute(SecurityConstants.SESSION_USER_NAME);
        if(user == null){
            return  null;
        }
        return user.getId();
    }

    /**
     * 获取登录用户的角色清单
     *
     * @return 登录用户的角色清单
     */
    @SuppressWarnings({"unchecked"})
    public static List<Role> getLoginUserRole() {
        return (List<Role>) HttpUtils.getSession().getAttribute(SecurityConstants.SESSION_ROLE_NAME);
    }

    /**
     * 获取登录用户的模块清单
     *
     * @return 登录用户的模块清单
     */
    @SuppressWarnings({"unchecked"})
    public static List<Module> getLoginUserModules() {
        return (List<Module>) HttpUtils.getSession().getAttribute(SecurityConstants.SESSION_PERMISSION_MODULE_NAME);
    }

}
